﻿using System;
using System.Web.UI;
using Novapangeia.Dominio;
using Novapangeia.Negocio;

namespace Novapangeia.Web
{
    public partial class Academia : LoggedPage
    {
        private Usuario _usuario;

        protected void Page_Load(object sender, EventArgs e)
        {
            _usuario = GerenciadorUsuario.consultarUsuarioDaSessao();
            ValidaTecnologia(_usuario);
        }

        private void ValidaTecnologia(Usuario usuario)
        {
            CustoArcosUserControl.BindCusto(Constantes.CUSTOARCOS);
            CustoCavalariaUserControl.BindCusto(Constantes.CUSTOCAVALARIA);
            CustoEngenhariaUserControl.BindCusto(Constantes.CUSTOENGENHARIA);
            CustoEspadasUserControl.BindCusto(Constantes.CUSTOESPADAS);
            CustoLancasUserControl.BindCusto(Constantes.CUSTOLANCAS);

            if (usuario.tecnologias.Cavalaria == true)
            {
                lblStatusCavalaria.Text = "Nível máximo atingido.";
                btnPesquisarCavalaria.Enabled = false;
            }
            else if (!GerenciadorTecnologia.CavalariaLiberada(usuario))
            {
                lblStatusCavalaria.Text = "É preciso liberar Espadas.\n";
                btnPesquisarCavalaria.Enabled = false;
            }
            else if (!GerenciadorTecnologia.PodePagarCavalaria(usuario))
            {
                lblStatusCavalaria.Text = "Você não possui recursos suficientes.";
                btnPesquisarCavalaria.Enabled = false;
            }
            else
            {
                lblStatusCavalaria.Text = "";
                btnPesquisarCavalaria.Enabled = true;
            }

            if (usuario.tecnologias.Arcos == true) //Valida se o nível máximo foi atingido
            {
                lblStatusArcos.Text = "Nível máximo atingido.";
                btnPesquisarArcos.Enabled = false;
            }
            else if (!GerenciadorTecnologia.PodePagarArcos(usuario)) //Valida se o usuário pode pagar
            {
                lblStatusArcos.Text = "Você não possui recursos suficientes.";
                btnPesquisarArcos.Enabled = false;
            }
            else
            {
                lblStatusArcos.Text = "";
                btnPesquisarArcos.Enabled = true;
            }

            if (usuario.tecnologias.Engenharia == true)
            {
                lblStatusEngenharia.Text = "Nível máximo atingido.";
                btnPesquisarEngenharia.Enabled = false;
            }
            else if (!GerenciadorTecnologia.PodePagarEngenharia(usuario))
            {
                lblStatusEngenharia.Text = "Você não possui recursos suficientes.";
                btnPesquisarEngenharia.Enabled = false;
            }
            else
            {
                lblStatusEngenharia.Text = "";
                btnPesquisarEngenharia.Enabled = true;
            }

            if (usuario.tecnologias.Espadas == true)
            {
                lblStatusEspadas.Text = "Nível máximo atingido.";
                btnPesquisarEspadas.Enabled = false;
            } 
            else if (!GerenciadorTecnologia.PodePagarEspadas(usuario))
            {
                lblStatusEspadas.Text = "Você não possui recursos suficientes.";
                btnPesquisarEspadas.Enabled = false;
            }
            else
            {
                lblStatusEspadas.Text = "";
                btnPesquisarEspadas.Enabled = true;
            }


            if (usuario.tecnologias.Lancas == true)
            {
                lblStatusLancas.Text = "Nível máximo atingido.";
                btnPesquisarLancas.Enabled = false;
            } 
            else if (!GerenciadorTecnologia.PodePagarLancas(usuario))
            {
                lblStatusLancas.Text = "Você não possui recursos suficientes.";
                btnPesquisarLancas.Enabled = false;
            }
            else
            {
                lblStatusLancas.Text = "";
                btnPesquisarLancas.Enabled = true;
            }
        }

        protected void btnPesquisarCavalaria_Click(object sender, EventArgs e)
        {
            bool sucesso = GerenciadorTecnologia.pesquisarCavalaria(_usuario);

            MostrarMensagemUsuario(sucesso);

            ValidaTecnologia(_usuario);
        }

        private void MostrarMensagemUsuario(bool sucesso)
        {
            if (sucesso)
                ClientScript.RegisterStartupScript(typeof(Page), "alertaSucesso", "<script type=text/javascript> alert('Operação realizada com sucesso.'); </script>");
            else
                ClientScript.RegisterStartupScript(typeof(Page), "alertaFalha", "<script type=text/javascript> alert('Não foi possível realizar a operação.'); </script>");
        }

        protected void btnPesquisarEngenharia_Click(object sender, EventArgs e)
        {
            bool sucesso = GerenciadorTecnologia.pesquisarEngenharia(_usuario);

            MostrarMensagemUsuario(sucesso);
        }

        protected void btnPesquisarArcos_Click(object sender, EventArgs e)
        {
            bool sucesso = GerenciadorTecnologia.pesquisarArcos(_usuario);

            MostrarMensagemUsuario(sucesso);
        }

        protected void btnPesquisarEspadas_Click(object sender, EventArgs e)
        {
            bool sucesso = GerenciadorTecnologia.pesquisarEspadas(_usuario);

            MostrarMensagemUsuario(sucesso);
        }

        protected void btnPesquisarLancas_Click(object sender, EventArgs e)
        {
            bool sucesso = GerenciadorTecnologia.pesquisarLancas(_usuario);

            MostrarMensagemUsuario(sucesso);
        }

        protected void Page_LoadComplete(object sender, EventArgs e)
        {
            ValidaTecnologia(_usuario);
        }
    }
}